package com.ht.modules.system.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ht.aspect.annotation.Dict;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 *  用户表Vo
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysUserVo implements Serializable {
    /**id*/
    @TableId(type = IdType.ASSIGN_UUID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**登录账号*/
    @Excel(name = "登录账号", width = 15)
    @ApiModelProperty(value = "登录账号")
    private String username;
    /**真实姓名*/
    @Excel(name = "真实姓名", width = 15)
    @ApiModelProperty(value = "真实姓名")
    private String realname;
    /**密码*/
    @ApiModelProperty(value = "密码")
    private String password;
    /**md5密码盐*/
    @ApiModelProperty(value = "md5密码盐")
    private String salt;
    /**头像*/
    @Excel(name = "头像", width = 15)
    @ApiModelProperty(value = "头像")
    private String avatar;
    /**生日*/
    @Excel(name = "生日", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "生日")
    private Date birthday;
    /**性别（1：男 2：女）*/
    @Excel(name = "性别", width = 15,dicCode="sex")
    @Dict(dicCode = "sex")
    @ApiModelProperty(value = "性别")
    private Integer sex;
    /**电子邮件*/
    @Excel(name = "电子邮件", width = 15)
    @ApiModelProperty(value = "电子邮件")
    private String email;
    /**电话*/
    @Excel(name = "电话", width = 15)
    @ApiModelProperty(value = "电话")
    private String phone;
    /**部门code*/
    @ApiModelProperty(value = "部门code")
    private String orgCode;
    /**状态(1：正常  2：冻结 ）*/
    @Excel(name = "状态", width = 15,dicCode="user_status")
    @Dict(dicCode = "user_status")
    @ApiModelProperty(value = "状态")
    private Integer status;
    /**删除状态（0，正常，1已删除）*/
    @Excel(name = "删除状态", width = 15,dicCode="del_flag")
    @ApiModelProperty(value = "删除状态")
    private String delFlag;
    /**创建人*/
    @Excel(name = "创建人", width = 15)
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**创建时间*/
    @Excel(name = "创建时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**更新人*/
    @Excel(name = "更新人", width = 15)
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /**更新时间*/
    @Excel(name = "更新时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**同步工作流引擎1同步0不同步*/
    @ApiModelProperty(value = "同步工作流引擎")
    private String activitiSync;
    /**职位*/
    @Excel(name = "职位", width = 15,dicCode="position")
    @Dict(dicCode = "position")
    @ApiModelProperty(value = "职位")
    private String position;
    /**所属银行*/
    @Excel(name = "所属银行", width = 15,dicCode = "bank_type")
    @ApiModelProperty(value = "所属银行")
    @Dict(dicCode = "bank_type")
    private String bankType;
    /**银行卡号*/
    @Excel(name = "银行卡号", width = 15)
    @ApiModelProperty(value = "银行卡号")
    private String bankNumber;
    /**网点联行号*/
    @Excel(name = "网点联行号", width = 15)
    @ApiModelProperty(value = "网点联行号")
    private String bankBranchCode;
    /**开户行全称*/
    @Excel(name = "开户行全称", width = 15)
    @ApiModelProperty(value = "开户行全称")
    private String bankBranchName;
    /**银行卡账户所属省*/
    @Excel(name = "银行卡账户所属省", width = 15)
    @ApiModelProperty(value = "银行卡账户所属省")
    private String bankCardProvince;
    /**银行卡账户所属市县*/
    @Excel(name = "银行卡账户所属市县", width = 15)
    @ApiModelProperty(value = "银行卡账户所属市县")
    private String bankCardArea;
    /**工资标识*/
    @Excel(name = "工资标识", width = 15)
    @ApiModelProperty(value = "工资标识")
    private String salaryFlag;
    /** 公积金模板id*/
    @ApiModelProperty(value = "公积金模板id")
    private String salaryTemplateFoundId;
    /**保险模板id*/
    @ApiModelProperty(value = "保险模板id")
    private String salaryTemplateInsuranceId;
    /**入职时间*/
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @Excel(name = "入职时间", width = 15,format = "yyyy-MM-dd")
    @ApiModelProperty(value = "入职时间")
    private Date entryTime;
    /**离职时间*/
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @Excel(name = "离职时间", width = 15,format = "yyyy-MM-dd")
    @ApiModelProperty(value = "离职时间")
    private Date outTime;
    /**工时费率*/
    @Excel(name = "工时费率", width = 15)
    @ApiModelProperty(value = "工时费率")
    private BigDecimal taskRate;
    /**民族*/
    @Excel(name = "民族", width = 15)
    @ApiModelProperty(value = "民族")
    private String national;
    /**籍贯*/
    @Excel(name = "籍贯", width = 15)
    @ApiModelProperty(value = "籍贯")
    private String nativePlace;
    /**身份证号*/
    @Excel(name = "身份证号", width = 15)
    @ApiModelProperty(value = "身份证号")
    private String idCardNumber;
    /**发证机关*/
    @Excel(name = "发证机关", width = 15)
    @ApiModelProperty(value = "发证机关")
    private String issuingAuthority;
    /**身份证开始有效期*/
    @Excel(name = "身份证开始有效期", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "身份证开始有效期")
    private Date validityBegin;
    /**身份证结束有效期*/
    @Excel(name = "身份证结束有效期", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "身份证结束有效期")
    private Date validityEnd;
    /**身份证正面*/
    @Excel(name = "身份证正面", width = 15)
    @ApiModelProperty(value = "身份证正面")
    private String idCardFront;
    /**身份证背面*/
    @Excel(name = "身份证背面", width = 15)
    @ApiModelProperty(value = "身份证背面")
    private String idCardBack;
    /**婚姻状况*/
    @Excel(name = "婚姻状况", width = 15)
    @ApiModelProperty(value = "婚姻状况")
    @Dict(dicCode = "marital_status")
    private String maritalStatus;
    /**政治面貌*/
    @Excel(name = "政治面貌", width = 15)
    @ApiModelProperty(value = "政治面貌")
    @Dict(dicCode = "political_outlook")
    private String politicalOutlook;
    /**家庭地址*/
    @Excel(name = "家庭地址", width = 15)
    @ApiModelProperty(value = "家庭地址")
    private String homeAddress;
    /**学历等级*/
    @Excel(name = "学历等级", width = 15)
    @ApiModelProperty(value = "学历等级")
    @Dict(dicCode = "education")
    private String education;
    /**毕业院校*/
    @Excel(name = "毕业院校", width = 15)
    @ApiModelProperty(value = "毕业院校")
    private String graduatedSchool;
    /**专业*/
    @Excel(name = "专业", width = 15)
    @ApiModelProperty(value = "专业")
    private String major;
    /**毕业时间*/
    @Excel(name = "毕业时间", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "毕业时间")
    private Date graduationTime;
    /**学历证书文件路径*/
    @Excel(name = "学历证书文件路径", width = 15)
    @ApiModelProperty(value = "学历证书文件路径")
    private String educationFilePath;
    /**学历证书文件名*/
    @Excel(name = "学历证书文件名", width = 15)
    @ApiModelProperty(value = "学历证书文件名")
    private String educationFileName;
    /**职称*/
    @Excel(name = "职称", width = 15)
    @ApiModelProperty(value = "职称")
    @Dict(dicCode = "positional_titles")
    private String positionalTitles;
    /**工号*/
    @Excel(name = "工号", width = 15)
    @ApiModelProperty(value = "工号")
    private String jobNumber;
    /**试用期截止时间*/
    @Excel(name = "试用期截止时间", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "试用期截止时间")
    private Date probationPeriod;
    /**合同开始时间*/
    @Excel(name = "合同开始日期", width = 15)
    @ApiModelProperty(value = "合同开始日期")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date contractStart;
    /**合同有效期*/
    @Excel(name = "合同有效期年限", width = 15)
    @ApiModelProperty(value = "合同有效期年限")
    @Dict(dicCode = "contractor_validity_period")
    private Integer contractPeriod;
    /**合同到期时间*/
    @Excel(name = "合同到期日期", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "合同到期日期")
    private Date contractExpire;
    /**户口类型*/
    @Excel(name = "户口类型", width = 15)
    @ApiModelProperty(value = "户口类型")
    @Dict(dicCode = "residence_type")
    private String residenceType;

    // ---------- 实体类与vo分界线 ----------

    /**部门主键*/
    private String departId;
    /**部门名称*/
    private String departName;
    /**部门编码*/
    private String departOrgCode;
    /**角色*/
    private String roleName;
    /**字符串生日*/
    @Excel(name = "字符串生日", width = 15)
    private String formatBirthday;

    // ---------- 查询条件分界线 ----------

    /**用于入职时间查询参数*/
    private String queryEntryStartTime;
    private String queryEntryEndTime;

    /**用于离职时间查询参数*/
    private String queryOutStartTime;
    private String queryOutEndTime;

}
